﻿#region

using System.Collections.Generic;
using System.ServiceModel;
using NsbMonitorClientService.DataContract;

#endregion

namespace NsbMonitorClientService
{
    [ServiceContract]
    public interface INsbMonitorClientService
    {
        [OperationContract]
        List<ServiceShortInfo> GetAllServicesShortInfo();

        [OperationContract]
        MessageTypeDetails GetMessageTypeDetails(int typeId);

        [OperationContract]
        ServiceDetails GetServiceDetails(int serviceId);

        [OperationContract]
        List<MessageAssemblyShortInfo> GetAllMessageAssembliesShortInfo();

        [OperationContract]
        MessageAssemblyDetails GetMessageAssemblyDetails(int messageAssemblyId);

        [OperationContract]
        List<MessageTypeShortInfo> GetMessageTypesFromAssembly(int messageAssemblyId);

        [OperationContract]
        byte[] GetMessageAssemblyFile(int messageAssemblyId);

        [OperationContract]
        List<MessageInQueueInfo> GetMessagesInQueue(string queueFullPath);

        [OperationContract]
        List<QueueShortInfo> GetAllQueues();

        [OperationContract]
        IList<MessageClipInfo> GetAllMessageClips();

        [OperationContract]
        void SaveMessageClip(MessageClipInfo messageClipInfo);

        [OperationContract]
        void DiscardMessageClip(int messageClipId);

        [OperationContract]
        string SendMessageToQueue(MessageToSendToQueue messageToSendToQueue);

        [OperationContract]
        void PurgeQueue(string queueFullPath);

        [OperationContract]
        void RemoveMessageFromQueue(string queueFullPath, string messageId);

        [OperationContract]
        void MoveMessageFromQueueToQueue(string sourceQueueFullPath, string messageId, string destinationQueueFullPath);

        [OperationContract]
        void CopyMessageFromQueueToQueue(string sourceQueueFullPath, string messageId, string destinationQueueFullPath);

    }
                             
    
}